Telegram Group Search
Python Hints
#Quick مثالی برای یک بحث: یک سری سوالات هست توی مصاحبه که واقعاً نیاز به درک درست از چندین جنبه داره. یک مثال میزنم و بعدش دیگه این سوال رو از مصاحبه‌هام حذف می‌کنم : مثلاً توی بکند؛ چرا به سریالایزر نیاز داریم ؟ من مدل دیتابیس رو دارم پکیج‌های مورد نیاز…
#Quick

یک سری پروژه داشتم نگاه میکردم، پروژه‌هایی که یا توی دوره‌های مختلف گذاشته شده (برای آموزش) یا بچه‌ها برای تمرین زدند.
(جلوتر میگم چرا اینکارو داشتم می‌کردم)

بعد می‌دیدم که خب هیچکدوم ازین پروژه‌ها مثلاً از ابزاری مثل Celery استفاده نکردن یا Celery داره ولی Flower نداره.

اول اینکه مگه توی دنیای فعلی میشه شما پروژه‌ای داشته باشی ولی celery توش نباشه؟ یا اینکه celery رو ببری روی پروداکشن ولی مانیتور نکنی (اینو توی خیلی پروژه‌ها هم دیدم).

یا یک مثال دیگه، هیچکدوم از پروژه‌ها رو نمی‌شد با تک کامند deploy کرد.
local, stage, production

بحث ci/cd نیست الان، ولی docker compose و ... باید به درستی نوشته بشه

و البته کلی نکات دیگه مثل این موضوع.

اینکه چرا دارم این موارد رو دنبال می‌کنم :

ضبط یک دوره کامل، اگر به نتیجه برسیم با یک تیم حرفه‌ای.
#خارج_از_بحث

شخص لینوس توروالدز یک تصمیمی گرفت و اونم اخراج تمام maintainer های روس بود. من خیلی صبر کردم ببینم کسی ازین موضوع حمایت می‌کنه یا نه که دیدم خیر همه مخالفان این موضوع هم شدند.

البته اونهایی که داستان ssh backdoor سال قبل رو یادشون هست، حمایت کردند.

سال قبل روی پروژه xz (برای فایل compression) یک گروهی حدوداً ۲ سال وقت گذاشتن و کد سالم ارائه کردند، از یک طرف دیگر هم یک کاراکتر با هویت خانوم (میگم کاراکتر چون جعلی هست) روی یک سری پروژه‌های دیگه شروع کرده بود کد سالم فرستادن، اما اینها پروژه‌هایی بود که نزدیک به mainrainer اصلی xz بود و مطمئن بود ایشون کدها و تلاشش رو می‌بینه (بدون اینکه روی کرنل یا لینوکس کاری بکنه)

گروه شروع می‌کنه به maintainer اصلی فشار آوردن که آقا چقدر دیر تأیید می‌کنی و بررسی می‌کنی اگر وقت نداری جایگزین معرفی کن، که نهایتاً همون کارکتر خانوم رو وارد می‌کنه بعد از یک مدت کاراکتر خانوم کار رو دست میگیره و ایمیل‌های باگ امنیتی رو برای خودش میفرسته و maintenaner اصلی رو دور میزنه (این پروسه ۳ سال طول کشیده از شروع کد زدن تا گرفتن این سطح دسترسی)


باقی داستان رو هم که می‌دونید، دنیا شانس آورد که یک نفر به میزان load cpu اش بسیار اهمیت میداد (پایچارم رو پاک کنید، شاید روی لود رم شما باگ بعدی رو پیدا کردید 🤣😂)

بعد از آنالیز git log مشخص میشه این گروه تلاش می‌کردند، خودشون رو چینی، هندی نشون بدهند (دستکاری تایمزون و ...) اما رفتارشون نشون داده نه تعطیلات چین و نه تعطیلات هند رو هیچوقت بیکار نبودند، فقط تعطیلات روسیه رو کار نمی‌کردند و ...

از همون زمان هم این بحث بررسی مجدد maintainer های روسی و سطح دسترسی و ... شروع شد.
بالاخره روسیه داخل جنگ هست و همه می‌دونند که دولت روسیه چه فشار و اعمال قدرتی روی هکرها و برنامه‌نویس‌هاش داره

خلاصه که شخصاً ازین کار لینوس توروالدز شدیداً حمایت می‌کنم.
امنیت دنیا مهمتر از چندتا maintainer هست و اگر این افراد هم واقعاً هدفشون پیشرفت جامعه لینوکس بوده بنظرم براشون قابل درک خواهد بود (توجیه شدند)
#تجربه

از طرف یک شرکت اومدن، کار استارتاپی داشتند حالا مشتری بین‌المللی پیدا شده براشون می‌خوان uptime, high availability, ... رو بالا ببرند.
چرا ؟
چون توی قرارداد، باید بگن که چه مقدار uptime دارند (معروف‌ترین میزان 99.99% هست که یعنی سالانه ۱ ساعت می‌تونند سرور رو down داشته باشند)
این شامل همه‌ی موارد میشه، آپگرید، جابجایی سرور و ...

این بین که داشتم با نیروها صحبت می‌کردم و مشاوره و همفکری داشتیم، متوجه شدم migration ها یکی از معضلات خواهد بود.

فرض کنید، شما سیستم رو به بهترین شکل چیدید. Load balancer, k8s , ... و برای دپلوی هم rolling update رو گذاشتید.
حالا فرض کنید، قراره برای یک فیچر جدید، یک ستون به جدول user اضافه کنید که به محض لاگین یا اولین استفاده کاربر باید پر بشه ؟

توی rolling update، شما وضعیتی خواهید داشت که هم نسخه قدیمی و هم نسخه جدید همزمان بالا هستند و دارن به کاربر پاسخ می‌دهند :
اگر نسخه قدیمی اجرا باشه models, database با هم نمی‌خونه تازه اگر این ستون not null هم باشه که باید پر بشه ولی منطق این کد توی ورژن قبلی کدها نیست و خطا .‌‌...

اگر نسخه جدید هم اجرا بشه که نیاز به تغییرات دیتابیس داره.

یک راهکار اینه که کلاً نسخه قدیمی رو خاموش کنید (همزمان همش رو) و نسخه جدید رو جایگزین کنید که خب ازون ۱ ساعت downtime با ارزش میزان زیادی رو از دست می‌دید.

یک راهکار multistep migration هست، که مثلاً توی مثال بالا یک ستون nullable تعریف کنید، ولی توی منطق کد مطمئن بشید که هیچوقت null نمونه بعد که ورژن قدیمی کامل از بین رفت، یک migration دیگه بنویسید که دیگه ستون nullable نباشه و مجدد دپلوی کنید.

دیدم بچه‌های این شرکت با این موضوع آشنایی نداشتند گفتم بگم، صرف اینکه HA, K8s, Replica, ... تعریف می‌کنید مشکل downtime شما حل نمی‌شه، فقط بهتر می‌شه.

اضافه کنم، مشکل شما وقتی حادتر می‌شه که ci/cd هم دارید و پروژه توی قدم‌های اولش هست، کلی فیچر و تغییرات هم قراره اضافه بشه


پ.ن:
این موضوع توی مصاحبه‌ها جزو سوالات مهم هست.
Python Hints
#Quick

و در نهایت :

استفاده از Insomnia, Postman توی شرکت برای پروژه‌های اصلی ممنوع شد.

بخاطر اینکه برای استفاده ازین ۲ ابزار حتماً باید اکانت داشته باشید و حتماً هم این ابزارها تمام اطلاعات رو با سرور‌هاشون Sync می‌کنند.

پیشنهاد خودشون Bruno بوده (پیشنهاد من بود) ولی هر ابزاری که بدون نیاز به اینترنت و sync بشه استفاده کرد مشکلی نداره.


پ.ن : اگر کسی گزینه بهتری می‌شناسه قطعاً منتظر شنیدنش هستم.
Thunder Client
هم درحال حاضر استفاده می‌کنم البته، ولی خب چندتا از دولوپر‌ها vscode ندارند که دردسر شده.
Forwarded from RandRng
این روزا خیلی سرم شلوغه و تمام تمرکزم روی کدها هست.
اینکه وسط اینکارا باید دیتکتیو بازی هم در بیارم یا option های یک ابزاری رو بخاطر بیارم خیلی سخته حتی بعضی کامندها انقدر سخت و ترکیبی می‌شه که خود chatGpt هم نمی‌تونه درست توضیحش بده :

من سلسله‌ای ازین کامندها دارم که ذخیره کردم (از خیلی قدیم) مشکل اینه که یک دفعه وسط پروژه لازمه یکیش رو تغییر بدم (بعضی کامندها انقدر pipe, ... داره خودش یک پروژه هست)

داشتم روی یکی از همین موارد کار می‌کردم یک منبع پیدا کردم خدایان خودشون اینو سر راهم گذاشتند.

اینو برید ببینید متوجه ‌می‌شید چی میگم.

چه ایده خفنی و چه اجرای بی‌نظیری؛ اینو حتما ذخیره‌اش کنید (جدی می‌گم)
شب و روزگار
خوش
Forwarded from RandRng
توضیحات پست توی گروه مربوط به کانال Rust
Please open Telegram to view this post
VIEW IN TELEGRAM
اون هیزم‌ها بود برای زمستان سرد اروپا جمع کردن

نمیشه یکی رو بفرستیم پس بگیره ؟
گیت‌هاب دسترسی رایگان به copilot داره می‌ده؛ نمی‌دونم برای همه هست یا نه.

ولی دقیقاً وسط کانفیگ NeoVim و بعد از push اولین تنظیمات این ایمیل برام اومده.

جالب بود 😂

پ.ن :
دوستان اشاره کردند یک پلن رایگان بهش اضافه شده که همگی می‌توانند استفاده کنند.
ولی دقیقاً وسط سوییچ کردن من به NeoVim بود.
هلوکاست ایرانی

یک زمانی شهردار تهران رو بخاطر ترافیک تهران اعدام کردند.

آخوند جز ویرانی، برای ایران دستاورد نداشت.
این باگ جدید یوتیوب هم خیلی مزخرفه‌ها :
دقیقه ۱ یا ثانیه ۵۲ تا ۶۰ ویدئو استاپ میشه و دیگه نمیشه دید؛ اول برای جلوگیری از adblocker قرار بود باشه ولی حالا داره حتی روی یوزرهای عادی هم تاثیر میذاره.

فعلا تنها راهکار اینه که روی ویدئو کلیک راست کنید و لینک رو با تایم استمپ کپی کنید.
تیم یوتیوب نوشته که این باگ ۵-۶ روز پیش بهشون گزارش شده و دارند روش کار می‌کنند.

ولی تو مخی شده برای همه نوع یوزرها


لینک :
Google Support
Python Hints
این باگ جدید یوتیوب هم خیلی مزخرفه‌ها : دقیقه ۱ یا ثانیه ۵۲ تا ۶۰ ویدئو استاپ میشه و دیگه نمیشه دید؛ اول برای جلوگیری از adblocker قرار بود باشه ولی حالا داره حتی روی یوزرهای عادی هم تاثیر میذاره. فعلا تنها راهکار اینه که روی ویدئو کلیک راست کنید و لینک…
یکی از کاربرامون ( منبع ذکر نشود ) بعد از خوردن فروم‌ها و وقت گذاشتن و تست کردن
یک پیشنهادی داد؛ آنبلاک کردن یک دامنه و دسترسی دادن بهش روی ادبلاکر ها مشکل رو حل می‌کنه :

https://jnn-pa.googleapis.com


تا راهکار درست بیاد؛ Adblocker رو روشن نگهدارید و دامنه بالا رو به Trusted site توی تنظیمات Adblocker خودتون اضافه کنید.

همچنان تبلیغات یوتیوب برای شما بسته خواهد ماند ولی مشکل ویدئوها حل میشه.

حداقل برای من و ایشون حل شده
وسط پروژه‌های مختلف دیگه vscode بهم جواب نمیده.

من عادت دارم؛ چندتا پروژه رو همزمان انجام میدم. وقتی یکی به Blocking, need data, ... میخوره یا اینکه تسک اون روزم تموم میشه.
میرم سراغ پروژه بعدی و vscode قبلی رو نمی‌بندم.

یک workspace جدید باز می‌کنم و ...

دیگه انقدر زیاد شد که Electron بودن vscode شروع به اذیت کرد خیلی دیر load میشد یا کارهارو دیر انجام میداد.

برای همین بعد از چندین سال برگشتم روی vim البته اینبار NeoVim چند روزی هست با بچه‌های DevChat مشورت می‌کنم و دارم محیط رو کانفیگ می‌کنم (خودمم این چندروز با این محیط کد میزنم) دارم سعی می‌کنم یک تنظیمات مینیمال نگهدارم که به اشتراک بذارم؛ برای کسایی که دوس دارند یاد بگیرند و تجریه کنند؛ ساده باشه مثل vscode با تمام کارایی‌های مهم برای حرفه‌ای‌ها هم بیس باشه برای تنظیمات بیشتر.

تنظیماتم برای python تقریبا تکمیل هست؛ برای Rust هم اضافه بشه + پیشنهاد یکی از بچه‌ها پلاگین برای اتصال به هوش مصنوعی رو هم اضافه کنم.

به اشتراک میذارم.

اگر ایده یا نیازمندی خاصی برای Python, Rust دارید بگید (اگر کلی باشه و مفید اضافه می‌کنم)

تصویر :
NeoVim + Zellij


مقداری توضیحات بیشتر:
۱- تم روی catppuccin هست؛ چون خیلی از همکارا حتی دیفالت دوستش دارند (خودم تغییرش میدم)
۲- تریمینال سمت راست رو من برای موزیک و داکیومنت خوندن و البته اکثر وقتا بررسی لاگ سرور و مانیتورینگ و ... استفاده می‌کنم
۳- محیط btop رو همیشه دارم برای بررسی پرفورمنس و البته اپتیمایزیشن
۴- بله lsp هم داریم؛ روی متدها یا توابع که برید؛
داکیومنت رو نشون میده؛ پارامترهای ورودی و خروجی و مثال و ...
۵- بله auto-complete رو هم فعال داریم اینجا.

auto format, auto fix
به محض ذخیره اجرا میشه که هردو با ruff هست برای سرعت بیشتر.
اسکرین‌شات هم داریم از کدها دقیقا مثل پست‌های آموزشی که قبلا می‌ذاشتم.

نمایش خط به خط git blame, git change, ... هم داریم.

باقیشم توی تصویر هست
😂😂😂😂😂😂
Python Hints
هلوکاست ایرانی یک زمانی شهردار تهران رو بخاطر ترافیک تهران اعدام کردند. آخوند جز ویرانی، برای ایران دستاورد نداشت.
تهران امروز

من میگم تهران، شما بخون ایران.

آخوند جز نابودی
هیچ چیزی برای ما نداره ...
Forwarded from RandRng
مدل خودشون:


بی‌غیرت، اون مسئولیه که داره اینو القا می‌کنه که
حدود ۸ میلیون خمینی فدای ۱۰۰ تا فرانکلین

هر ۱۰۰ دلار حدوداً ۸ میلیون تومان
Python Hints
وسط پروژه‌های مختلف دیگه vscode بهم جواب نمیده. من عادت دارم؛ چندتا پروژه رو همزمان انجام میدم. وقتی یکی به Blocking, need data, ... میخوره یا اینکه تسک اون روزم تموم میشه. میرم سراغ پروژه بعدی و vscode قبلی رو نمی‌بندم. یک workspace جدید باز می‌کنم و ...…
به تغییرات آخر رسیدیم :

1- کامندارو آوردم وسط صفحه.

2- فایلای بزرگ رو سپردم به بیگ‌فایل که بخش بخش نمایش بده روی صفحه تا زمان لود کردنشون کند نباشه.

3- ی پلاگین مثل cursor ai اضافه شد ولی بصورت دیفالت غیرفعال هست.

4- داشبورد اضافه شده که توی تصویر هست.

5- برای پایتون format, lint فقط و فقط ruff رو داریم و اونم موقع ذخیره کارش رو می‌کنه

6-پلاگین which-key اضافه شد؛ خیلی‌ها گفتن که فراموش می‌کنند کلیدهارو

7-دیباگر پایتون رو حذف کردم؛ زمان لود رو میبرد بالا

8-کی‌مپ برای حیسون اضافه کردم که پرتی‌پرینتش کنه (پلاگین نیست و از پایتون روی سیستم استفاده می‌کنه)

9-پلاگین برای مشاهده csv, tsv اضافه شد؛ بصورت جدول نشون میده و تمیز.

10-یک venv selector هم داریم؛ البته من برای pyright, ... قبلا کد زدم که .venv رو بخونه اگر نبود از بیس بگیره و ... ولی خب اینم اضافه شد.


احتمال زیاد برای Rust دیباگر رو فعال می‌کنم (چون نیازه ولی برای پایتون نداشته باشیم؛ نمیدونم)

چیز دیگه به ذهنم نمیرسه و ۹۰٪ چیزایی که پیشنهاد دادید روی این نسخه و نسخه قبلی بود.

هر جیزی هم که توی این توسعه دادن ۱ هفته‌ای که اومدم روی neovim بهش برخورد می‌کنم رو اضافه می‌کنم.
2025/06/16 03:22:45
Back to Top
HTML Embed Code: